home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO15B.dsk / SYS.UTIL.bas < prev    next >
BASIC Source File  |  2012-02-16  |  12KB  |  260 lines

  1. 10 : REM SYS.UTIL
  2. 11  HOME 
  3. 15  POKE 813,0
  4. 20  POKE 34,5: POKE 35,20: HOME 
  5. 25  &  RECALL Z$
  6. 30  &  SPEED= 2,2,2
  7. 40  REM ONERR  GOTO 3250 
  8. 50  GOTO 150
  9. 51 :
  10. 52  HOME : &  AT P,A: IF A = 0  THEN  &  RETURN 
  11. 53  HOME : VTAB 9: &  PRINT 
  12. 54  &  PRINT  SPC( 11);"Disk is not on line"
  13. 55  &  TANP,PH$:L =  LEN(PH$):L = 40 -L:L = L/2: &  PRINT , SPC( L);PH$
  14. 56  &  PRINT , SPC( 10);"Install it please...";: GET Z$: GOTO 52
  15. 57 P =  PEEK(837): GOTO 52
  16. 60  &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$): RETURN 
  17. 70  REM 
  18. 80  HOME : &   OR ,Z$:L =  LEN(Z$):L = 40 -L:L = L/2: &  PRINT  SPC( L);Z$: RETURN 
  19. 81  VTAB 17: &  PRINT : CALL  -958: RETURN 
  20. 90  REM 
  21. 100  &  PRINT , SPC( 14);"Command? ";
  22. 110  &  GET Z$: &  SGNZ$: &  INTC$,Z$,Z: IF Z = 0  THEN  &  PRINT  CHR$(7);: GOTO 110
  23. 120  &  PRINT Z$: RETURN 
  24. 130  GOSUB 60:Z = Z +64:Z$ =  CHR$(Z): RETURN 
  25. 140 :
  26. 150 P =  PEEK(837): &  GOSUB 52: PRINT  CHR$(4);"RESTORE WHERE"
  27. 152  FOR I = 0 TO 7: &  TANI,PH$(I): NEXT 
  28. 190  &  SPEED= 255,255,255
  29. 200 T = 7:Z$ = "** Main System Utilities **": GOSUB 80
  30. 205  &  PRINT "---------------------------------------"
  31. 210  &  PRINT "[B]oards             [M]enus"
  32. 230  &  PRINT "[D]isk utilities     [H]ardware"
  33. 240  &  PRINT "[L]ocations          [S]pecial Chars."
  34. 250  &  PRINT "[C]ounters           [T]ime Limits"
  35. 260  &  PRINT "[U]pdate where file  [Q]uit/rtn to BBS"
  36. 265  &  PRINT "---------------------------------------"
  37. 280 C$ = "BMDHLS?QUCT": GOSUB 100: ON Z GOTO 300,980,1480,1320,1350,1360,200,1330,1440,1331,1332
  38. 290 :
  39. 300 Z$ = "** Boards Menu **": GOSUB 80:T = 3
  40. 310  &  PRINT , SPC( T);"[L]ist the existing boards"
  41. 320  &  PRINT , SPC( T);"[E]dit a board"
  42. 330  &  PRINT , SPC( T);"[C]reate a new board"
  43. 340  &  PRINT , SPC( T);"[D]elete an old board"
  44. 345  &  PRINT , SPC( T);"[M]anually edit board list"
  45. 350  &  PRINT , SPC( T);"[Q]uit/rtn to Main Utility Menu"
  46. 360 C$ = "LECQ?DM": GOSUB 100: ON Z GOTO 380,470,590,200,300,740,1341
  47. 370 :
  48. 380 Z$ = "** Current Boards List **": GOSUB 80
  49. 390  &  PRINT "Brd Nm   Board Name     Disk Prefix"
  50. 400  &  PRINT "------ -------------- ----------------"
  51. 410 Z$ = "              "
  52. 420  FOR I = 0 TO 63
  53. 430  IF B$(I) = ""  THEN 450
  54. 440  &  PRINT "Brd "; RIGHT$("  " + STR$(I),2);" "; LEFT$(B$(I) +Z$,14);" ";PH$(B(I))
  55. 450  NEXT : &  PRINT ,"Press any key to continue...";: &  GET Z$: &  PRINT : GOTO 300
  56. 460 :
  57. 470  GOSUB 81: &  PRINT ,"Edit which board? (0-63) ";: &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$)
  58. 480  IF Z$ = ""  THEN  GOSUB 81: GOTO 300
  59. 490  IF Z <0  OR Z >63  THEN Z$ = "Out of range!": GOTO 615
  60. 500  IF B$(Z) = ""  THEN Z$ = "Not a valid board!": GOTO 615
  61. 510  POKE 809,Z
  62. 520 I = B(Z):P = I: &  GOSUB 52: PRINT PF$;"BRD.";Z: PRINT RS$;"FIL.MSG"
  63. 530 BD =  PEEK(809)
  64. 540  &  STR$20," ": &  PRINT ,"Board #";BD;" is loaded!",,
  65. 550  GOTO 570
  66. 560  GOTO 57: PRINT RS$;"WHERE": GOTO 360
  67. 570  POKE 808,1: GOTO 1400
  68. 580 :
  69. 590  GOSUB 81: &  PRINT ,"Create which board? ";: &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$): IF Z$ = ""  THEN  GOSUB 81: GOTO 360
  70. 600  IF Z <0  OR Z >63  THEN Z$ = "Out of range!": GOTO 615
  71. 610  IF B$(Z) < >""  THEN Z$ = "Board is already in use!"
  72. 611  GOTO 620
  73. 615 Z = (40 - LEN(Z$))/2: GOSUB 81: &  PRINT , SPC( Z);Z$,, SPC( 5);"Press any key to continue...";: &  GET Z$: GOSUB 81: GOTO 300
  74. 620 Z$ = "** Create a New Board **": GOSUB 80
  75. 625  &  PRINT ,"Enter disk prefix number? (0-33) ";: &  INPUT Z$:X =  VAL(Z$): IF Z$ = ""  THEN 300
  76. 630  &  PRINT ,"Use prefix ";PH$(X),"(Y=yes/N=no) ";: &  USRI: ON I GOTO 640,625
  77. 640  POKE 809,Z: &  PRINT ,"Enter board name: ";: &  STR$20," ": &  INPUT B$(Z): IF B$(Z) = ""  THEN 300
  78. 650  &  PRINT ,B$(Z),"Correct? (Y/N) ";: &  USRI: ON I GOTO 660,640
  79. 660  PRINT PF$;PH$(X)
  80. 665  &  FRER:R =  ABS(R)
  81. 666  &  PRINT "Free bytes = ";R
  82. 667  IF R <20  THEN  &  PRINT ,"Sorry not enough disk space!","Press any key to continue...";: &  GET Z$:B$(Z) = "": GOTO 300
  83. 670  &  TAN PEEK(837),Z$: &  PRINT ,,"Please wait, creating your new board!...",,:B(Z) = X: PRINT ST$;Z$;"/WHERE"
  84. 680  PRINT D$;"CREATE ";PH$(X);"/BRD.";Z: PRINT PF$;PH$(X);"/BRD.";Z
  85. 690  PRINT RS$;Z$;"/BRD.33/FIL.MSG"
  86. 700 BD =  PEEK(809)
  87. 710  PRINT ST$;"FIL.MSG": PRINT D$;"CREATE B.0": PRINT D$;"CREATE B.1"
  88. 720  &  GOSUB 57: PRINT RS$;"WHERE": GOTO 300
  89. 730 :
  90. 740  GOSUB 81: &  PRINT ,"Delete which board? ";: &  STR$3,"090": &  INPUT Z$:Z =  VAL(Z$): IF Z$ = ""  THEN  GOSUB 81: GOTO 360
  91. 750 Z$ = "** Delete Board **": GOSUB 80
  92. 755  POKE 809,Z: &  PRINT ,"Delete BRD.";Z;" - ";B$(Z)," (Y/N) ";: &  USRR: ON R GOTO 760,300
  93. 760 I = B(Z):Z$ = "B.0": PRINT PF$;PH$(I);"/BRD.";Z: DIM A$(100)
  94. 765  &  PRINT ,"Please wait while deleteing this board!"
  95. 770  PRINT OP$;Z$;",TDIR": PRINT RD$;Z$
  96. 780  INPUT "";A$: INPUT "";A$: INPUT "";A$:R = 0: PRINT A$
  97. 790  INPUT "";A$(R): IF A$(R) < >""  THEN R = R +1: GOTO 790
  98. 800  PRINT CL$;Z$:R = R -1: IF R <0  THEN 820
  99. 810  FOR I = 0 TO R: PRINT D$;"UNLOCK";Z$;"/"; MID$ (A$(I),2,15): PRINT D$;"DELETE";Z$;"/"; MID$ (A$(I),2,15): NEXT 
  100. 820  PRINT D$;"DELETE ";Z$: FOR I = 0 TO 100:A$ = "": NEXT : PRINT FR$
  101. 830 Z$ = "B.1"
  102. 840  PRINT OP$;Z$;",TDIR": PRINT RD$;Z$
  103. 850  INPUT "";A$: INPUT "";A$: INPUT "";A$:R = 0
  104. 860  INPUT "";A$(R): IF A$(R) < >""  THEN R = R +1: GOTO 860
  105. 870  PRINT CL$;Z$:R = R -1: IF R <0  THEN 890
  106. 880  FOR I = 0 TO R: PRINT D$;"UNLOCK";Z$;"/"; MID$ (A$(I),2,15): PRINT D$;"DELETE";Z$;"/"; MID$ (A$(I),2,15): NEXT 
  107. 890  PRINT D$;"DELETE ";Z$: FOR I = 0 TO 100:A$ = "": NEXT : PRINT FR$
  108. 900  PRINT PF$: INPUT "";A$:X =  LEN(A$)
  109. 910  PRINT D$;"DELETE FIL.MSG"
  110. 920  FOR I = 2 TO X: IF  MID$ (A$,I,1) = "/"  THEN 940
  111. 930  NEXT 
  112. 940 I = I -1: PRINT PF$; MID$ (A$,1,I): PRINT D$;"DELETE BRD."; PEEK(809)
  113. 950  &  DEL A$: PRINT FR$:X =  PEEK(809):B$(X) = "": &  GOSUB 57: PRINT ST$;"WHERE": GOTO 300
  114. 960 :
  115. 970 :
  116. 980 Z$ = "** Menus Utility **":T = 5: GOSUB 80
  117. 990  &  PRINT , SPC( T);"[L]ist the existing menus"
  118. 1000  &  PRINT , SPC( T);"[E]dit a menu"
  119. 1010  &  PRINT , SPC( T);"[C]reate a new menu"
  120. 1015  &  PRINT , SPC( T);"[D]elete a menu"
  121. 1020  &  PRINT , SPC( T);"[M]anually edit menu list"
  122. 1030  &  PRINT , SPC( T);"[Q]uit/rtn to Main Utility Menu"
  123. 1040 C$ = "LECQ?MD": GOSUB 100: ON Z GOTO 1140,1200,3000,200,300,1050,3210
  124. 1050  GOSUB 81: &  PRINT ,"Edit which menu item? ";: &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$)
  125. 1060  IF Z$ = ""  THEN  GOSUB 81: GOTO 1040
  126. 1070  IF Z <0  OR Z >63  THEN  GOSUB 81: &  PRINT , SPC( 14);"Out of range!",, SPC( 5);"Press any key to continue...";: &  GET Z$: &  PRINT : GOSUB 81: GOTO 1040
  127. 1075 Z$ = "** Manually Edit Menu List **": GOSUB 80
  128. 1080  &  PRINT ,"Mnu.";Z;" - ";M$(Z);" - ";PH$(M(Z))
  129. 1090  &  PRINT ,"[N]ame  [P]ath  [Q]uit  ";: &  GET Z$: &  SGNZ$: &  INT"NPQ",Z$,I: ON I GOTO 1110,1120,980: GOTO 1090
  130. 1100 :
  131. 1110  &  PRINT ,"Enter new name: ";: &  STR$20," ": &  INPUT M$(Z): GOTO 1080
  132. 1120  &  PRINT ,"Enter Path number: ";: &  STR$2,"090": &  INPUT Z$:I =  VAL(Z$):M(Z) = I: GOTO 1080
  133. 1130 :
  134. 1140 Z$ = "** Current Menus List **": GOSUB 80
  135. 1141  &  PRINT "Mnu Nm   Menu  Name     Disk Prefix"
  136. 1142  &  PRINT "------ -------------- ----------------"
  137. 1143 Z$ = "              "
  138. 1144  FOR I = 0 TO 63
  139. 1145  IF M$(I) = ""  THEN 1147
  140. 1146  &  PRINT "Mnu "; RIGHT$("  " + STR$(I),2);" "; LEFT$(M$(I) +Z$,14);" ";PH$(M(I))
  141. 1147  NEXT : &  PRINT ,"Press any key to continue...";: &  GET Z$: &  PRINT : GOTO 980
  142. 1190 :
  143. 1200  &  PRINT ,"Edit which menu? (0-63) ";: &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$)
  144. 1210  IF Z$ = ""  THEN 1040
  145. 1220  IF Z <0  OR Z >63  THEN  &  PRINT "Out of range!",: GOTO 1040
  146. 1230  IF M$(Z) = ""  THEN  &  PRINT "Not a valid menu!",: GOTO 1040
  147. 1240  POKE 809,Z
  148. 1250 I = M(Z):P = I: &  GOSUB 52: PRINT RS$;"MNU.";Z
  149. 1260 BD =  PEEK(809)
  150. 1270  &  STR$20," ": &  PRINT ,"Menu #";BD;" is loaded!",,
  151. 1280  GOTO 1300
  152. 1290  &  GOSUB 57: PRINT RS$;"WHERE": GOTO 1040
  153. 1300  POKE 808,2: GOTO 1400
  154. 1310 :
  155. 1320 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.3"
  156. 1330 P =  PEEK(839): &  GOSUB 52: PRINT RN$;"BBS.1"
  157. 1331 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.4"
  158. 1332 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.5"
  159. 1340 :
  160. 1341  GOSUB 81: &  PRINT ,"Edit which board item? ";: &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$)
  161. 1342  IF Z$ = ""  THEN  GOSUB 81: GOTO 360
  162. 1343  IF Z <0  OR Z >63  THEN  GOSUB 81: &  PRINT , SPC( 14);"Out of range!",, SPC( 5);"Press any key to continue...";: &  GET Z$: GOSUB 81: GOTO 360
  163. 1344 Z$ = "** Manually Edit Board List **": GOSUB 80
  164. 1345  VTAB 4: &  PRINT : CALL  -958: &  PRINT ,"Brd.";Z,"Name ";B$(Z),"Prefix - ";B(Z);" - ";PH$(B(Z))
  165. 1346  &  PRINT ,"[N]ame  [P]ath  [Q]uit  ";: &  GET Z$: &  SGNZ$: &  INT"NPQ",Z$,I: ON I GOTO 1348,1349,300: GOTO 1346
  166. 1347 :
  167. 1348  &  PRINT ,"Enter new name: ";: &  STR$20," ": &  INPUT B$(Z): GOTO 1345
  168. 1349  &  PRINT ,"Enter Path number: ";: &  STR$2,"090": &  INPUT Z$:I =  VAL(Z$):B(Z) = I: GOTO 1345
  169. 1350 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.1"
  170. 1360 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.2"
  171. 1370 :
  172. 1380 :
  173. 1390 :
  174. 1400  &  TAN PEEK(837),PH$: PRINT D$;"CHAIN ";PH$;"/SYS.UTIL.1"
  175. 1410 :
  176. 1420 :
  177. 1430  VTAB 17: &  PRINT : CALL  -958: &  PRINT  SPC( 5);"Loading the Prefix Text File."
  178. 1435  &  GOSUB 2160: &  PRINT : VTAB 17: CALL  -958: VTAB 16: GOTO 1580
  179. 1440  PRINT ST$;"WHERE": GOTO 280
  180. 1450  REM 
  181. 1460  REM UPDATE PREFIX FILE
  182. 1470  REM 
  183. 1480  &  GOSUB 1970
  184. 1490 Z$ = "** Disk Utilities **": GOSUB 80
  185. 1500 :
  186. 1510 I = 6
  187. 1520  &  PRINT , SPC( I);"[E]dit/View Prefixs"
  188. 1530  &  PRINT , SPC( I);"[F]iler"
  189. 1570  &  PRINT , SPC( I);"[Q]uit - Rtn to Main Menu"
  190. 1580 C$ = "EFQ": GOSUB 100
  191. 1590  ON Z GOTO 1660,1690,200: GOTO 1580
  192. 1600 :
  193. 1650 :
  194. 1660 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.0"
  195. 1670 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.4"
  196. 1680 P =  PEEK(837): &  GOSUB 52: PRINT D$;"RUN UTIL.5"
  197. 1690  IF  PEEK(769) = 0  THEN 1700
  198. 1692  &  PRINT "Sorry, this utility, can not be done"
  199. 1693  &  PRINT "remote!"
  200. 1694  &  PRINT ,"Press any key to continue...";: &  GET Z$: &  PRINT : GOTO 1480
  201. 1700  HOME 
  202. 1710  PRINT "PREFIX TO THE RIGHT DISK, OR"
  203. 1715  PRINT "SUBDIRECTORY AND TYPE '-FILER'"
  204. 1720  PRINT "TO RUN FILER.  TO RESTART RESTART THE"
  205. 1730  PRINT "BULLETIN BOARD, DO A COLD START BOOT."
  206. 1745  POKE 34,0: POKE 35,24
  207. 1750  CALL 48888:: NEW : END 
  208. 1920 :
  209. 1930  END 
  210. 1940  REM 
  211. 1950 : REM SET CONSTANTS
  212. 1960  REM 
  213. 1970 D$ =  CHR$(4)
  214. 1980 OP$ = D$ +"OPEN"
  215. 1990 RD$ = D$ +"READ"
  216. 2000 WR$ = D$ +"WRITE"
  217. 2010 CL$ = D$ +"CLOSE"
  218. 2020 RN$ = D$ +"RUN"
  219. 2030 DL$ = D$ +"DELETE"
  220. 2040 BL$ = D$ +"BLOAD"
  221. 2050 BS$ = D$ +"BSAVE"
  222. 2060 RS$ = D$ +"RESTORE"
  223. 2070 ST$ = D$ +"STORE"
  224. 2080 PF$ = D$ +"PREFIX"
  225. 2090 CH$ = D$ +"CHAIN"
  226. 2100 FR$ = D$ +"FRE"
  227. 2110 :
  228. 2120 S$ = "                   "
  229. 2140  &  RETURN 
  230. 2150 :
  231. 3000 :
  232. 3010  GOSUB 81: &  PRINT ,"Create which menu? ";: &  STR$2,"090": &  INPUT Z$:Z =  VAL(Z$): IF Z$ = ""  THEN  GOSUB 81: GOTO 980
  233. 3020  IF Z <0  OR Z >63  THEN Z$ = "Out of range!": GOTO 3050
  234. 3030  IF M$(Z) < >""  THEN Z$ = "Menu is already in use!": GOTO 3050
  235. 3040  GOTO 3060
  236. 3050 Z = (40 - LEN(Z$))/2: GOSUB 81: &  PRINT , SPC( Z);Z$,, SPC( 5);"Press any key to continue...";: &  GET Z$: GOSUB 81: GOTO 980
  237. 3060 Z$ = "** Create a New Menu **": GOSUB 80
  238. 3070  &  PRINT ,"Enter disk prefix number? (0-33) ";: &  INPUT Z$:X =  VAL(Z$): IF Z$ = ""  THEN 980
  239. 3080  &  PRINT ,"Use prefix ";PH$(X),"(Y=yes/N=no) ";: &  USRI: ON I GOTO 3090,3070
  240. 3090  POKE 809,Z: &  PRINT ,"Enter menu name: ";: &  STR$20," ": &  INPUT M$(Z): IF M$(Z) = ""  THEN 980
  241. 3100  &  PRINT ,M$(Z),"Correct? (Y/N) ";: &  USRI: ON I GOTO 3110,3090
  242. 3110  &  AT X,A
  243. 3120  &  FRER
  244. 3130  &  PRINT "Free bytes = ";R
  245. 3140  IF R <15  THEN  &  PRINT ,"Sorry not enough disk space!","Press any key to continue...";: &  GET Z$:M$(Z) = "": GOTO 980
  246. 3150  &  TAN PEEK(837),Z$: &  PRINT ,,"Please wait, creating your new menu!...",,:M(Z) = X: PRINT ST$;Z$;"/WHERE"
  247. 3160  PRINT RS$;Z$;"/MNU.33"
  248. 3170 BD =  PEEK(809)
  249. 3180  PRINT ST$;"MNU.";BD
  250. 3190  &  GOSUB 57: PRINT RS$;"WHERE": GOTO 980
  251. 3200 :
  252. 3210  GOSUB 81: &  PRINT ,"Delete which menu? ";: &  STR$3,"090": &  INPUT Z$:Z =  VAL(Z$): IF Z$ = ""  THEN  GOSUB 81: GOTO 980
  253. 3220 Z$ = "** Delete Menu **": GOSUB 80
  254. 3230  POKE 809,Z: &  PRINT ,"Delete MNU.";Z;" - ";M$(Z)," (Y/N) ";: &  USRR: ON R GOTO 3240,980
  255. 3240 I = M(Z): &  AT M(Z),A
  256. 3250  &  PRINT ,"Please wait while deleteing this menu!"
  257. 3260  PRINT D$;"DELETE MNU."; PEEK(809):M$( PEEK(809)) = ""
  258. 3270  &  AT  PEEK(837),A: PRINT ST$;"WHERE": GOTO 980
  259. 3280 :
  260. 3290 :